#include<stdio.h>
#include<signal.h> 
#include<unistd.h>
#include<stdlib.h>

// volatile int quit = 0;//保存内存的可见性

void handler(int signo)
{
    printf("pid :%d ,%d号信号，正在被捕捉！\n",getpid() ,signo);
    // printf("quit:%d",quit);
    // quit = 1;
    // printf("->%d\n",quit);
}


void Count(int cnt)//倒计时函数
{
    while(cnt)
    {
        printf("%2d\r",cnt);//\r 让光标回到行首
        fflush(stdout);//刷新缓冲区
        cnt--;
        sleep(1);
    }
    printf("\n");
}

int main()
{
    signal(SIGCHLD,handler);
    printf("我是父进程,%d ,ppid :%d\n",getpid(),getppid());
    pid_t id = fork();
    if(id == 0)
    {
        //子进程
        printf("我是子进程,%d ,ppid :%d,我要退出了\n",getpid(),getppid());
        Count(5);
        exit(1);
    }
    //父进程
    while(1)  sleep(1);

    
    // signal(2 , handler);
    // while(!quit);
    // printf("注意！！我是正常退出的！！\n");
    return 0;
}